1. Field of the Invention
The present invention relates to the control of storage systems for digital computers. More particularly, the present invention relates to a method and apparatus for reassigning data sectors stored in a rotating media storage system.
2. Description of the Prior Art
Disk drive systems typically include: a disk having a thin magnetic coating upon which user data and position information is stored in the form of flux transitions disposed in a series of concentric tracks; a spindle assembly having a spindle motor for supporting and rotating the disk; a read/write head for detecting the flux transitions in the magnetic material as the disk is rotated relative to the head, and for generating an analog read-back signal carrying data and position information; a head-arm assembly for supporting and moving the head radially over the surface of the disk; an actuator assembly for driving the head-arm assembly in response to an actuator command signal; a servo controller providing the actuator command signal which is used to position the head relative to the tracks of the disk; a read/write electronics unit coupled to receive the read-back signal from the head and operative to provide servo information to the servo controller; an interface unit for communicating with a host system; and a formatter unit for receiving a list of logical address values indicating requested data sectors from the interface unit and converting the logical address values into zone, cylinder, head, and sector values (ZCHS values) which uniquely identify the location of the requested data sectors. The ZCHS values are used by the servo controller to position the head over an appropriate data sector on an appropriate track or cylinder. A disk drive system performs operations including: formatting the disk for storing data in a format supported by the system and the disk; writing data received from the host to the disk; and reading data from the disk and transmitting it to the host.
In a sector servo disk drive system, the disk surface includes tracks which are divided into radial sectors each including: a servo region for storing servo fields for carrying servo information which is pre-written on the disk during manufacturing; and a data region for storing data fields. The servo information is used by the controller to determine the location of a servo field and track for positioning of the head relative to a particular track during read and write operations. In a dedicated servo system having multiple disks, the entire surface of one side of one disk is pre-recorded with servo track information and the position of a servo head relative to the dedicated disk surface is used to indicate the position of multiple data read/write heads relative to their respective disk surfaces. In a disk drive having multiple heads and multiple disks, a set of tracks disposed at the same radius on all surfaces is referred to as a cylinder.
Typically, each data sector includes an ID field, a GAP field, a DATA field and a PAD field. The DATA field includes: a DATA sub-field; and an error correction code (ECC) sub-field used to detect and correct soft or hard errors on the media within the capability of the code for the purpose of avoiding the transfer of erroneous data to and from the host. As further explained below, some sector servo system formats do not use an ID field, but rather use a header sub-field within the DATA field. ID fields provide unique identification tags for each sector in a track. Each ID field comprises sub-fields including an ID sub-field and a CRC sub-field having error detection bytes used to detect errors in the ID field. The ID sub-field typically includes a cylinder high byte, a cylinder low byte, a sector number byte, a head number byte, and a plurality of defect management bytes, further described below.
In typical ID_Less formats, the ID field is replaced by a header sub-field within the DATA field, thus combining the identification data and the DATA field into one field and reducing the number of bits necessary for each sector. The CRC field associated with the header sub-field can be decreased or eliminated, thereby further reducing the overhead of the system and eliminating the hardware which generates the CRC field. In ID_Less formats, all information in the sector header may be predetermined by reading a small number of other sector headers on the track. An example of a No-ID(trademark) format is taught by Best et al. in U.S. Pat. No. 5,500,848, entitled xe2x80x9cSECTOR SERVO DATA RECORDING DISK HAVING DATA REGIONS WITHOUT ID FIELDSxe2x80x9d which is incorporated herein by reference. The No-ID(trademark) format provides increased data storage capacity by increasing recording density.
Another commonly used technique for increasing the data storage capacity of a disk is the method of zone bit recording (ZBR) in which the disk is divided into multiple zones in order to take advantage of the higher storage potential of the outer tracks without exceeding the allowable density on the inner tracks. The tracks are grouped into zones such that all the tracks in one zone are adjacent to each other. The data rate at which data is written to or read from the disk is constant for all tracks within a zone and probably different for each zone.
During seek operations, as the read/write head moves between zones, the disk is continuously rotating which may cause the read/write head to cross over one or more servo fields as it travels from one track or zone to another track or zone. As the read/write head changes tracks between different zones, the number of sectors between servo marks changes because of the change in bit density between zones. While the angular position of the head is always known, the angular position must be translated after a zone change into a known position on the track.
In disk drive systems using ID fields, the ID fields are written onto the disk during the format operation, and include defect management information which indicates whether the corresponding data sector is a spare sector or a bad data sector. At the end of the format operation, all information regarding good sectors, bad sectors, and spare sectors is known to the disk drive, and can be queried by scanning the entire set of sector IDs written on the disk. In disk drive systems using a No-ID(trademark) format, a defect map is used to provide defect information.
Media defects in the magnetic recording layer of a disk may result in portions of the layer becoming unacceptable for use in recording the magnetic transitions. As recording densities increase, both in terms of radial tracks per inch and linear density along a track, the occurrence of media defects increases. Defects may be introduced during the manufacturing process which prevent data from being stored in or retrieved from the sector are detected after the manufacturing process and stored in a primary defect list, or xe2x80x9cP-listxe2x80x9d. During a format operation, the P-list is stored directly on the disk in a reserved space of the disk. Additional defective sectors, known as secondary or xe2x80x9cgrownxe2x80x9d defects may be detected after the P-list has been compiled. A list of grown defects is maintained and stored in a grown defect list, or xe2x80x9cG-listxe2x80x9d, which is also stored in a reserved space. A table derived from the P-list and G-list at format time is read from the disk and stored in a RAM upon power up of the system, and the controller uses information derived from the P-list and G-list to manage defects and avoid writing data to defective sectors.
FIG. 1 shows a block diagram at 10 illustrating a data sector format conversion system of a prior art disk drive system including zone bit recording and adaptive skewing features. The data sector format conversion system 10 includes: an LBA to PBA conversion unit 12 for receiving logical block addresses (LBA""s) via a bus 14, and for providing corresponding physical block addresses (PBA""s) to a bus 16; a defect mapping unit 18 referred to by the LBA to PBA conversion unit 12 via a bus 20; a PBA to ZCHS conversion unit 22 for receiving PBA""s from unit 12 via bus 16, and for providing corresponding ZCHS values to a bus 24; a zone conversion unit 26 referred to by the PBA to ZCHS conversion unit 22 via a bus 28; a skew machine 30 for receiving ZCHS values from the PBA to ZCHS conversion unit via bus 24, and for providing corresponding skewed ZCHS values to a bus 32; and a synchronization skew unit 34 referred to by the skew machine 30 via a bus 36.
Descriptions of exemplary implementations of the LBA to PBA conversion unit 12 and defect mapping unit 18 for a No-ID(trademark) format are provided in the aforementioned Best et al. patent. Another example of a defect management method for use with a No-ID(trademark) format is taught by Dobbek in United Kingdom Patent Application Number 9425483.6, entitled xe2x80x9cA SYSTEM AND METHOD FOR SKIP-SECTOR MAPPING IN A DATA RECORDING DISK DRIVExe2x80x9d which is incorporated herein by reference. This system includes a defect map which is implemented by: a virtual track table (VT table) including entries representing the mostly redundant higher order bits of logical block addresses; and a virtual sector table (VS table) including entries representing the lower order bits of logical block addresses.
The zone conversion unit 26 is used in disk drives implementing zone bit recording and typically uses a zone table including a zone entry for each zone. Each of the zone entries includes: a starting PBA for the corresponding zone; the number of data sectors per group, where a group is some fixed unit such as a track or cylinder; the number of data sectors per track; and the starting cylinder of the group. In such an implementation, a search for given PBA simply requires locating the appropriate zone entry in the table. Thus, if the group is defined as a cylinder, the zone table can easily be used to determine a PBA offset, a track offset, a head, a sector, and a cylinder. Alternatively, if the group is defined as a track, the table can easily be used to determine PBA offset, a track, a sector, a cylinder, and a head. Thus, regardless of the group definition, the PBA leads readily to a physical disk location. Once the disk drive completes the required seek operation to the cylinder and head identified, the drive formatter scans for either the desired LBA or the desired sector by examining the ID field of each data sector as it passes under the head, or calculates the actual location of the desired LBA (sector) using No-ID techniques. When the appropriate data sector is found, the data is transferred and the operation is complete.
The skew machine 30 and synchronization skew unit 34 provide appropriate skewing of the sector information provided by conversion unit 22. In order to minimize the latency when performing sequential operations across track boundaries, cylinder boundaries, and zone boundaries, LBA""s must be staggered by some number of sectors. A sequential operation across track boundaries, for purposes of the present application, may arise due to a head switch, including switching from one head to another in a cylinder, or a switch across track boundaries within a single disk. The number of sectors by which a sequential operation is staggered is called skew factor, or skew value. A skew factor in a multiple disk array storage system may include both a raw skew factor and a synchronization skew factor. Components of raw skew include: a track skew factor accounting for the time required to physically switch heads; a cylinder skew factor accounting for the time required to physically switch cylinders; and a zone skew factor accounting for the time required to change zone parameters and become ready to access an LBA in the new zone and is measured in data sectors.
Synchronization skew is used in multiple disk drive array storage device systems (DASD systems) to shift sector locations in response to excessive defects occurring in a synchronization zone on a disk thereby synchronizing the phase of the disks in the system without consuming additional disk storage capacity. In a DASD system, a number of different spindles must be synchronized, and it is often desirable to synchronize the rotation of all disk drives in the system to one master index. However, synchronization becomes very difficult when one of the spindles has a large number of defects because when a defect is encountered on one of the disks, all data on the disks with defects will be shifted in time relative to a disk without defects. Thus, the data on the defective disk will be out of phase by a number of sectors, and the spindle with the defects tends to lag more and more behind the other spindles.
To solve this problem, an adaptive synchronization skew method is taught by Dobbek in U.S. Pat. No. 5,586,606, entitled xe2x80x9cMETHOD AND APPARATUS FOR MAXIMIZING EFFECTIVE DISK CAPACITY USING ADAPTIVE SKEWINGxe2x80x9d which is incorporated herein by reference. In accordance with this adaptive synchronization skew method, each track is arranged into synchronization zones, the adaptive synchronization skew comprising an excess transition time period associated with each synchronization zone for synchronizing the phase and speed of rotation of the disk storage devices. An excess time period comprises raw and synchronization skew, wherein the synchronization skew is used to shift sector locations in response to excessive defects occurring in the synchronization zone on the disk thereby synchronizing the phase of the disks in the system without consuming additional disk storage capacity.
Defect Management
Many different defect management schemes are used in the prior art. For example, in a linear replacement defect management scheme, defective sectors are flagged and mapped to a good sector somewhere else on the disk causing the system to jump from the defective sector to the good sector and then back to the sector following the defective sector in order to read or write the data on the disk in a consecutive order. This mapping technique adds considerable latency to the system and degrades its performance because of the required jumps from the defective sectors to the mapped substituting good sector and back. Each sector on the track is identified consecutively by a physical address or physical sector number, representing the actual location of the sector on the track. A logical sector number is used by the system controller to read data from and write data to the disk drive. If a first track includes more defective sectors than spare sectors, each defective sector which cannot be mapped to a spare sector of the first track must be mapped to a spare sector of another corresponding track. In this case, the system must travel to the other corresponding track in order to read the data from or write the data to the sector which is substituting for the defective sector of the first track, and then travel back to the first track in order to read or write further information in a consecutive order. An associated mapping value accompanies each defective sector which cannot be mapped to a spare sector on the same track to inform the system where the substituting sector is located on the disk. The associated mapping value can be found in a pointer within the ID field of the defective sector or can be found in a defect table which lists all of the defective sectors and their associated substituting sectors. The disadvantage of the method of linear replacement is that it requires extra seeks to be performed by the system if the system is to read or write the data in a consecutive order corresponding to the logical sector numbers
An improvement over the linear replacement technique is the method of sector slipping which also uses spare sectors assigned to each track or cylinder to avoid the defective sectors, but does not require as many seeks to be performed by the system. Each sector on a track is identified consecutively by a physical address or physical sector number, representing the actual location of the sector on the track. The sectors are numbered from zero to Nxe2x88x921, consecutively from the INDEX mark, where N is the number of sectors on the track. The sectors on a track are also identified by a logical sector number corresponding to their position within the sequence of data stored on the track. The logical sector number is used by the controller to read data from and write data to the disk drive. Not every sector will be assigned a logical sector number. A typical system employing sector slipping will include spare sectors at the end of each track. In a sector slipping scheme the defective sector is mapped to the next good sector on the track until all spare sectors are used. During formatting of the disk drive, logical sectors,are assigned consecutively from a first sector on the track to the last sector, slipping defective sectors until all spare sectors on the track are used.
When the number of defects on a track is greater than the number of spares assigned to that track, the defective sectors are still slipped. But as soon as the number of defective sectors exceeds the number of spares on the track, the remainder of the defective sectors are not slipped, but are mapped to a sector on another track or somewhere else on the disk using the linear replacement method as described above, or cylinder slipping method from one track to the next.
The method of sector slipping maintains the logical sectors in a consecutive order allowing the system to read or write the data in a consecutive order without extra seeks. Extra seeks are required when the number of defective sectors on the track or segment exceed the number of spare sectors assigned to the track or segment and the system must travel to another track or segment to read or write the data from a substituting spare sector and then back to the original track.
FIGS. 2A and 2B show block diagrams at 40 and 42 each depicting a plurality of sequential tracks 44 of a file, each of the tracks including a plurality of sectors 45. FIG. 2A depicts a prior art in-line reassign operation implemented in a forward direction for a reassign sector 48 shifted in a forward direction toward a closest spare sector 50. FIG. 2B depicts a prior art in-line reassign operation implemented in a reverse direction for a reassign sector 52 shifted in a reverse direction toward a closest spare sector 54.
A reassign operation may be initiated in response to a request by a customer via a command, or may be automatically initiated in accordance with a data recovery procedure if the drive is so authorized by the customer. A typical prior art reassign includes the initial steps of: finding a closest spare sector which may be disposed at a location in either a forward or a reverse direction from the reassign sector, and which is closest to the reassign sector; and scanning all of the sectors disposed between the reassign sector and the closest spare to determine whether an ECC exposure indicates a defect between the reassign sector and the closest spare. If it is determined that there are no ECC exposures indicating a defect between the reassign sector and the closest spare, the controller: updates the defect tables to indicate the corresponding reassign; updates a check point value indicative of a number of sectors, between the reassign sector and closest spare, which have been copied to a buffer; and sets to zero a sectors-moved value which is indicative of a number of sectors between the reassign sector and closest spare which have been copied from the buffer to corresponding slipped sector locations.
If it is determined that there is one or more ECC exposures indicating a defect between the reassign sector and the closest spare, the controller scans all of the sectors disposed between the reassign sector and the next closest opposite direction spare to determine whether an ECC exposure indicates a defect between the reassign sector and the next closest opposite direction spare. If it is determined that there are no ECC exposures indicating a defect between the reassign sector and the next closest opposite direction spare, the controller executes the same steps outlined above for the next closest opposite direction spare. If it is determined that there is one or more ECC exposures indicating a defect between the reassign sector and the next closest opposite direction spare, the controller indicates an error or nested reassign. A nested reassign is one where defects encountered during a reassign are also reassigned. Nested reassign processes are complicated and dangerous.
After finding a closest spare sector, updating the defect tables and check point value, and setting the sectors-moved value to zero, the controller begins moving sectors appropriately. In accordance with a sector moving sequence of the reassign operation, the controller slips, or shifts, each of the sectors between the reassign sector and the closest spare sector by one sector location in the direction of the closest spare by reading the reassign sector and each of the intermediate data sectors between the reassign sector and the closest spare sector, and then writing back each of the intermediate data sectors shifted by one. If the reassign sector is a defective sector, the corresponding data sector is corrected using error correction codes (ECC). The number of intermediate sectors may be very large because the stream of intermediate sectors may span many track boundaries. Because the number of intermediate sectors may exceed the capacity of the buffer used to read the reassign sector and intermediate sectors, the intermediate sectors must be moved piece-wise which introduces a potential problem of losing data in the event of a power failure.
To avoid the potential problem of losing data, prior art reassign operations include the steps of: seeking to the customer data area; reading a current portion (e.g., a plurality of N of the intermediate tracks) of the sectors to be shifted into a buffer; seeking to a reserved storage area of the file; writing the current portion of the sectors from the buffer to the reserved storage area; writing an updated check point value to the reserved storage area; reading a next portion of the sectors from the reserved area into the buffer; seeking back to the customer data area; and writing the data sectors from the reserved area to the corresponding appropriate sector locations (shifted forward or backward by one). Reassign operations performed according to the above described prior art method are very time consuming due to the very large average numbers of sectors between the reassign sectors and corresponding spare sectors. The number of sectors between a reassign sector and corresponding spare sector increases as spare sectors are used. Each sector may require several seconds to be reassigned.
FIG. 3 shows a prior art track detail object at 60 which includes information used for implementing a transfer of a track or a portion of a track. This information is loaded into hardware to implement the transfer. The prior art track detail object 60 includes: a current zone table field, a current FLBA field, a next boundary FLBA field, a field for storing a value indicating the number of non-skip sectors until the next boundary FLBA, a beginning VT pointer field, a current VT pointer field, an ending VT pointer field, a current spindle synchronization zone field, a field for storing a current raw skew value, a field for storing a current synchronization skew value, a field for storing a current total skew value, a field for storing a current cylinder value, a field for storing a current sector value, a field for storing a value indicating the number of sectors until a real boundary, a field for storing a current head value, and a field for storing a value indicating the number of cylinders left in a spindle sync zone.
The prior art track detail object also includes: a current state field; a starting sector field for storing a starting sector value; a field for storing a value indicative of the number of blocks to transfer; a skip count field for carrying a value indicative of the number of skips sectors on the corresponding track; and a field for carrying a value indicative of a maximum number of skips sectors per track.
Conventionally, a track detail object is generated for each track upon transfer of the data, or a portion of the data, stored in the track. ZCHS values are generated for the starting sector of the transfer. The length of the data transfer, which may span several tracks, is also received from the host. The track detail object is generated based on ZCHS values, defect information, and state information. Initially, the sector format conversion system 10 (FIG. 1) receives a logical block address from the host system, and the LBA to PBA conversion unit 12 (FIG. 1) determines a corresponding physical block address, sets pointers in the defects/spares tables, determines a next boundary LBA, and the distance to the next boundary LBA. In a detail state sub-process, the PBA to ZCHS conversion unit 12 determines corresponding ZCHS values based on the physical block address referring to the zone conversion unit 26 (FIG. 1). A map track sub-process is executed to build a track image based on the starting sector of the transfer, the number of sectors to be transferred, skip locations which will be dropped in the transfer, and state information required by a state machine (not shown) building the track details. A next track sub-process advances the physical state to the next head/track.
After the track detail object is generated, front end transfer hardware is armed, in accordance with a pipeline type operation, and the data is transferred. The front end transfer hardware includes a starting sector register for storing a starting sector value; a skew register for storing a skew value; a length-of-transfer register for storing a value indicating the total number of sectors to be transferred; and a first-in-first-out buffer (FIFO) for storing the skips information derived from the VT and VS tables of the defect mapping unit 12 (FIG. 1), which include the locations of defective sectors and spare sectors.
The time required to transfer a single track is approximately equal to the sum of the rotational period (or revolution time) of the disk and the track skew time associated with the track to be transferred. The time required to transfer a file may be expressed according to Relationship (1), below;
(Total No. of tracks*Revolution time)+(Total Number of Tracksxe2x88x921)*Skew timexe2x80x83xe2x80x83(1)
While reassignment is a very time consuming process, the associated advantage of increasing throughput by eliminating the need to seek away to retrieve reassigned data remains very desirable. What is needed is a system and method for reassigning sectors wherein the time required to implement the reassignment is reduced. What is also needed is a system and method for reassigning sectors wherein the amount of data which must be moved, or transferred, is reduced so that a smaller buffer is required. What is further needed is a system and method for reassigning sectors wherein the chance of detrimentally affecting the integrity of stored data is reduced.
It is an object of the present invention to provide a system and method for reassigning sectors wherein: the time required to implement the reassignment is reduced; the amount of data which must be moved, or transferred, is reduced so that a smaller buffer is required; and the chance of detrimentally affecting the integrity of stored data is reduced.
Briefly, a presently preferred embodiment of the present invention includes a reassign process in a disk drive system including a plurality of tracks for storing data, each of the tracks being divided into a plurality, of sectors, each sector having a corresponding logical address value associated therewith. Each track has a corresponding skew associated therewith and having a nominal skew value providing adequate time for sequential access of the corresponding track from a sequentially preceding track. The reassign process is operative to reassign data sectors stored in a reassign span including a first partial track having a reassign sector, a second partial track having a spare sector corresponding with the reassign sector, and at least one intermediate track disposed between the first and second partial tracks. The reassign process includes the step of adjusting the nominal skew value of at least one of the intermediate tracks by a corresponding skew delta adjustment value so that the logical address values associated with the sectors of the intermediate track are transposed thereby effectively shifting data stored in selected sectors of the intermediate track in a direction of the spare sector relative to the reassign sector.
If the reassign sector sequentially precedes the corresponding spare sector, the step of adjusting the nominal skew value includes decreasing the nominal skew value by the corresponding skew delta adjustment value. In this forward direction reassign case, the skew delta adjustment value is determined by determining the number of sectors between a leading edge sector of the intermediate track and a first trailing edge non-skip sector of the intermediate track. Also, for a forward reassign, data is read from the first trailing edge non-skip sector of the intermediate track, and written to a selected sector of a succeeding track. In the preferred embodiment, the succeeding track is a succeeding intermediate track which is skewed by the corresponding skew delta adjustment value, and the selected sector of the succeeding intermediate track is a first trailing edge non-skip sector of the succeeding intermediate track.
If the spare sector sequentially precedes the corresponding reassign sector, the step of adjusting the nominal skew value includes increasing the nominal skew value by the corresponding skew delta adjustment value. In this reverse direction reassign case, the skew delta adjustment value is determined by determining the number of sectors between a trailing edge sector of the intermediate track and a first non-skip leading edge sector of the intermediate track. Also, for a reverse reassign, data is read from the first non-skip leading edge sector of the intermediate track, and written to a selected sector of a preceding track. In the preferred embodiment, the preceding track is a preceding intermediate track which is skewed by the corresponding skew delta adjustment value, and the selected sector is a first trailing edge non-skip sector of the preceding intermediate track.
If the reassign sector sequentially precedes the corresponding spare sector, the step of reading data from the first trailing edge non-skip sector of the intermediate track includes: reading a track detail object associated with the intermediate track from a memory storage device of the disk drive system; post processing the track detail object so that it specifies a transfer of only the first trailing edge non-skip sector of the intermediate track; storing the track detail object in a track detail queue in a memory storage device of the disk drive system; setting a fast track feed mode enabling streaming of the track detail object from the track detail queue; and reading the data into a data buffer of the disk drive system by transferring the data as specified by the track detail object.
If the spare sector sequentially precedes the corresponding reassign sector, the step of reading data from the first non-skip leading edge sector of the intermediate track includes: reading a track detail object associated with the intermediate track from a memory storage device of the disk drive system; post processing the track detail object so that it specifies a transfer of only the first leading edge non-skip sector of the intermediate track; storing the track detail object in a track detail queue in a memory storage device of the disk drive system; setting a fast track feed mode enabling streaming of the track detail object from the track detail queue; and reading the data into a data buffer of the disk drive system by transferring the data as specified by the track detail object. The foregoing and other objects, features, and advantages of the represent invention will be apparent from the following detailed description of the preferred embodiment which makes reference to the several figures of the drawing.